using System;
using System.Linq.Expressions;
using Microsoft.Phone.Shell;

namespace FluentAppBar
{
    public interface IFluentAppBar<T> : IDisposable
    {
        IFluentAppBar<T> First(Action<IApplicationBarIconButton, T> onClick, Expression<Func<T, bool>> isEnabledProperty = null, Action<IApplicationBarIconButton, T> isEnabledChanged = null, Func<IApplicationBarIconButton, T, Uri> iconUri = null);
        IFluentAppBar<T> Second(Action<IApplicationBarIconButton, T> onClick, Expression<Func<T, bool>> isEnabledProperty = null, Action<IApplicationBarIconButton, T> isEnabledChanged = null, Func<IApplicationBarIconButton, T, Uri> iconUri = null);
        IFluentAppBar<T> Third(Action<IApplicationBarIconButton, T> onClick, Expression<Func<T, bool>> isEnabledProperty = null, Action<IApplicationBarIconButton, T> isEnabledChanged = null, Func<IApplicationBarIconButton, T, Uri> iconUri = null);
        IFluentAppBar<T> Fourth(Action<IApplicationBarIconButton, T> onClick, Expression<Func<T, bool>> isEnabledProperty = null, Action<IApplicationBarIconButton, T> isEnabledChanged = null, Func<IApplicationBarIconButton, T, Uri> iconUri = null);
        IFluentAppBar<T> MenuItem(Action<IApplicationBarMenuItem, T> onClick, Expression<Func<T, bool>> isEnabledProperty = null, Action<IApplicationBarMenuItem, T> isEnabledChanged = null);
    }
}